package com.hyperexcel.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Getter;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * @desc: 针对不同的业务场景，需要定义不同的监听器行为封装一个通用的监听器HyperListener<T>
 * @author: Linbizhao
 * @date 2024年08月29日 12:05
 */
@Getter
public class HyperListener<T> extends AnalysisEventListener<T> {

    // 创建List集合封装最终的数据
    private final List<T> data;

    // 字段列表
    private final Field[] fields;

    // 泛型对象
    private final Class<T> clazz;

    // 校验开关
    private final boolean VALIDATE_SWITCH = true;

    private HyperListener(Class<T> clazz) {
        fields = clazz.getDeclaredFields();
        this.clazz = clazz;
        this.data = new ArrayList<T>();
    }


    /**
     * 每解析到一行数据都会触发
     */
    @Override
    public void invoke(T row, AnalysisContext analysisContext) {
        data.add(row);
    }

    /**
     * 所有数据解析完之后会触发
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

}
